package com.fyh.service;

import com.fyh.entity.job.DeliveryRecord;
import com.fyh.entity.job.JobPosition;
import com.fyh.entity.job.JobPositionRequest;
import com.fyh.entity.job.SimpleJobPosition;
import com.fyh.entity.user.JobFavorite;
import com.fyh.entity.user.SimpleCandidate;

import java.util.List;
import java.util.Map;

public interface JobService {
    /**
     * 获取标签列表
     * @return
     */
    Map getTagList();

    /**
     * 通过EmployerId获取职位列表
     * @param employerId
     * @return
     */
    List<SimpleJobPosition> getSimpleJobListByEmployerId(Long employerId);

    /**
     * 通过职位Id获取标签列表
     * @param positionId
     * @return
     */
    List<String> getTagNameListByPositionId(Long positionId);

    /**
     * 通过职位Id获取职位详情
     * @param positionId
     * @return
     */
    JobPosition getJobPositionDetail(Long positionId);

    /**
     * 修改职位
     * @param jobPosition
     */
    void updateJobPosition(JobPosition jobPosition);

    /**
     * 通过职位名称和职位类型获取职位列表
     * @param jobPositionRequest
     * @return
     */
    List<SimpleJobPosition> getSimpleJobListByNameAndType(JobPositionRequest jobPositionRequest);

    /**
     * 添加职位
     * @param jobPosition
     */
    void addJobPosition(JobPosition jobPosition);

    /**
     * 删除职位
     * @param positionId
     * @return
     */
    void deleteJobPosition(Long positionId);

    /**
     * 更新职位状态
     * @param positionId
     */
    void updateJobStatus(Integer status, Long positionId);

    /**
     * 获取职位是否投递
     * @param positionId
     * @param userId
     * @return
     */
    Boolean getDeliveryExist(Long positionId, Long userId);

    /**
     * 投递职位
     * @param positionId
     * @param userId
     */
    void deliveryVitae(Long positionId, Long userId);

    /**
     * 获取职位求职者ID，投递时间和投递状态列表
     * @param positionId
     * @return
     */
    List<DeliveryRecord> getSimpleDeliveryRecordListList(Long positionId, String status);

    /**
     * 更新职位状态
     * @param deliveryRecord
     */
    void updateDeliveryStatus(DeliveryRecord deliveryRecord);

    /**
     * 获取职位收藏列表
     * @param jobFavoriteList
     * @return
     */
    List<SimpleJobPosition> getSimpleJobListByPositionId(List<JobFavorite> jobFavoriteList);

    /**
     * 通过职位Id获取 employerId
     * @param positionId
     * @return
     */
    Long getEmployerIdByPositionId(Long positionId);
}
